package cn.chencaiju.algorithm;

import java.util.ArrayList;
import java.util.List;

import org.junit.Test;

public class YangHuiTriangle {
	public List<List<Integer>> generate(int numRows) {
		List<List<Integer>> result=new ArrayList<>();	
		for(int i=0;i<numRows;i++) {
			if(i==0) {
				List<Integer> temp=new ArrayList<>();
				temp.add(1);
				result.add(temp);
				continue;
			}
			List<Integer> temp=new ArrayList<>();
			for(int j=0;j<=i;j++) {
				if(j==0||j==i) {
					temp.add(1);
					continue;
				}
				int x=result.get(i-1).get(j-1)+result.get(i-1).get(j);
				temp.add(x);
			}
			result.add(temp);
		}
		return result;
	}
	@Test public void testGenerate() {
		List<List<Integer>> a;
		a=generate(5);
		for(List<Integer> temp:a) {
			System.out.println(temp.toString());
		}
		
	}

	public List<Integer> getRow(int rowIndex){
		rowIndex++;
		List<List<Integer>> result=new ArrayList<>();	
		for(int i=0;i<rowIndex;i++) {
			if(i==0) {
				List<Integer> temp=new ArrayList<>();
				temp.add(1);
				result.add(temp);
				continue;
			}
			List<Integer> temp=new ArrayList<>();
			for(int j=0;j<=i;j++) {
				if(j==0||j==i) {
					temp.add(1);
					continue;
				}
				int x=result.get(i-1).get(j-1)+result.get(i-1).get(j);
				temp.add(x);
			}
			result.add(temp);
		}
		return result.get(rowIndex-1);
	}
	@Test public void testGetRow() {
		System.out.println(getRow(0).toString());
	}
}
